В некоторых случаях бывает необходимо удостовериться в том, что у пользователя, который пытается получить доступ к функциям или данным, есть необходимые права для этого. Например, расширение может предоставлять удаленный интерфейс, позволяющий управлять конфиденциальными данными. Смотрите в качестве примера “Упражнение 3. Сущности и авторизация Plesk”.

В таких случаях можно использовать метод pm_Auth::isValidCredentials().

Следующий пример показывает, как выполняется авторизация с помощью параметров доступа, полученных из заголовка запроса HTTP.

namespace PleskExt\Example\Middleware;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;

class BasicAuth
{
    public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
    {
        if ($request->hasHeader('Authorization')) {
            list($login, $password) = $this->parseAuthorizationHeader($request->getHeaderLine('Authorization'));
            if ($login && $password) {
                if (\pm_Auth::isValidCredentials($login, $password)) {
                    return $next($request->withAttribute('login', $login), $response);
                }
            }
        }
        return $next($request, $response);
    }

    private static function parseAuthorizationHeader($header)
    {
        if (strpos($header, 'Basic') !== 0) {
            return [null, null];
        }
        $parsed = explode(':', base64_decode(substr($header, 6)), 2);
        if (count($parsed) < 2) {
            return [null, null];
        }
        return $parsed;
    }
}

Вот еще один пример.